package cn.edu.wynu.d3_time;
/*
为什么要学习Calendar?

需求:将2023年09月10日增加一个月
1、定义字符串记住:2023年09月10日
2、把字符串时间解析成Date日期对象
3、通过Date日期对象获取2023年9月10日的毫秒值
4、增加一个月的亳秒值:1000*60*60*24*30
5、再格式化时间亳秒值得到结果:2023年10月10日

Calendar：
1、代表的是系统此刻时间对应的日历。
2、通过它可以单独获取、修改时间中的年、月、日、时、分、秒等。
*/

/*
Calendar：
代表的是系统此刻时间对应的日历，通过它可以单独获取、修改时间中的年、月、日、时、分、秒等

Calendar日历类的常见方法
            方法名                             说明
public static Calendar getInstance()    获取当前日历对象。
public int get(int field)               获取日历中的某个信息。
public final Date getTime()             获取日期对象。
public long getTimeInMillis()           获取时间毫秒值
public void set(int field,int value)    修改日历的某个信息。
public void add(int field,int amount)   为某个信息增加/减少指定的值

注意:Calendar是可变对象，一旦修改后其对象本身表示的时间将产生变化。
*/
import java.util.Calendar;
import java.util.Date;

public class Test4Calendar {
    public static void main(String[] args) {
        // 掌握Calendar的使用和特点
        // 1、得到系统此刻时间对应的日期对象
        Calendar now = Calendar.getInstance();
        System.out.println(now);

        // 2、获取日历中的某个信息
        int year = now.get(Calendar.YEAR); // 年
        System.out.println(year);

        int days = now.get(Calendar.DAY_OF_YEAR); // 一年中的第几天
        System.out.println(days);

        // 3、拿到日历中记录的日期对象
        Date d = now.getTime();
        System.out.println(d);

        // 4、拿到时间毫秒值
        long time = now.getTimeInMillis();
        System.out.println(time);

        // 5、修改日历中的某个信息
        now.set(Calendar.MONTH, 11); // 修改为12月
        now.set(Calendar.DAY_OF_YEAR, 100); // 修改为一年中的第100天
        System.out.println(now);

        // 6、为某个信息增加或减少多少
        now.add(Calendar.DAY_OF_YEAR,100); // 增加100天
        now.add(Calendar.DAY_OF_YEAR, -10); // 减少10天
        now.add(Calendar.DAY_OF_MONTH, 2); // 增加2天
        now.add(Calendar.HOUR,-8); // 减少8小时
        now.add(Calendar.MONTH, -1); // 减少一个月
        System.out.println(now);
    }
}
